ಕನ್ನಡ

useMemo, useCallback, ಮತ್ತು React.memo ಬಳಸಿ ರಿಯಾಕ್ಟ್ ಅಪ್ಲಿಕೇಶನ್‌ ಕಾರ್ಯಕ್ಷಮತೆ ಉತ್ತಮಗೊಳಿಸಲು ಸಮಗ್ರ ಮಾರ್ಗದರ್ಶಿ. ಅನಗತ್ಯ ರೀ-ರೆಂಡರ್‌ಗಳನ್ನು ತಡೆಯಲು ಮತ್ತು ಬಳಕೆದಾರ ಅನುಭವವನ್ನು ಸುಧಾರಿಸಲು ಕಲಿಯಿರಿ.

ರಿಯಾಕ್ಟ್ ಪರ್ಫಾರ್ಮೆನ್ಸ್ ಆಪ್ಟಿಮೈಸೇಶನ್: useMemo, useCallback, ಮತ್ತು React.memo ಗಳಲ್ಲಿ ಪರಿಣಿತಿ

ರಿಯಾಕ್ಟ್, ಯೂಸರ್ ಇಂಟರ್‌ಫೇಸ್‌ಗಳನ್ನು ನಿರ್ಮಿಸಲು ಬಳಸುವ ಒಂದು ಜನಪ್ರಿಯ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಲೈಬ್ರರಿಯಾಗಿದ್ದು, ಇದು ತನ್ನ ಕಾಂಪೊನೆಂಟ್-ಆಧಾರಿತ ಆರ್ಕಿಟೆಕ್ಚರ್ ಮತ್ತು ಡಿಕ್ಲರೇಟಿವ್ ಶೈಲಿಗೆ ಹೆಸರುವಾಸಿಯಾಗಿದೆ. ಆದರೆ, ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಸಂಕೀರ್ಣವಾದಂತೆ, ಕಾರ್ಯಕ್ಷಮತೆ ಒಂದು ಚಿಂತೆಯ ವಿಷಯವಾಗಬಹುದು. ಕಾಂಪೊನೆಂಟ್‌ಗಳ ಅನಗತ್ಯ ರೀ-ರೆಂಡರ್‌ಗಳು ನಿಧಾನಗತಿಯ ಕಾರ್ಯಕ್ಷಮತೆಗೆ ಮತ್ತು ಕಳಪೆ ಬಳಕೆದಾರ ಅನುಭವಕ್ಕೆ ಕಾರಣವಾಗಬಹುದು. ಅದೃಷ್ಟವಶಾತ್, ರಿಯಾಕ್ಟ್ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಉತ್ತಮಗೊಳಿಸಲು useMemo, useCallback, ಮತ್ತು React.memo ಸೇರಿದಂತೆ ಹಲವಾರು ಪರಿಕರಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ. ಈ ಮಾರ್ಗದರ್ಶಿ ಈ ತಂತ್ರಗಳನ್ನು ವಿವರಿಸುತ್ತದೆ, ಉತ್ತಮ ಕಾರ್ಯಕ್ಷಮತೆಯ ರಿಯಾಕ್ಟ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ನಿರ್ಮಿಸಲು ನಿಮಗೆ ಸಹಾಯ ಮಾಡಲು ಪ್ರಾಯೋಗಿಕ ಉದಾಹರಣೆಗಳು ಮತ್ತು ಕ್ರಿಯಾತ್ಮಕ ಒಳನೋಟಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ.

ರಿಯಾಕ್ಟ್ ರೀ-ರೆಂಡರ್‌ಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು

ಆಪ್ಟಿಮೈಸೇಶನ್ ತಂತ್ರಗಳನ್ನು ತಿಳಿಯುವ ಮೊದಲು, ರಿಯಾಕ್ಟ್‌ನಲ್ಲಿ ರೀ-ರೆಂಡರ್‌ಗಳು ಏಕೆ ಸಂಭವಿಸುತ್ತವೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಬಹಳ ಮುಖ್ಯ. ಒಂದು ಕಾಂಪೊನೆಂಟ್‌ನ ಸ್ಟೇಟ್ ಅಥವಾ ಪ್ರಾಪ್ಸ್ ಬದಲಾದಾಗ, ರಿಯಾಕ್ಟ್ ಆ ಕಾಂಪೊನೆಂಟ್ ಮತ್ತು ಅದರ ಚೈಲ್ಡ್ ಕಾಂಪೊನೆಂಟ್‌ಗಳ ರೀ-ರೆಂಡರ್ ಅನ್ನು ಪ್ರಚೋದಿಸುತ್ತದೆ. ರಿಯಾಕ್ಟ್ ವಾಸ್ತವಿಕ DOM ಅನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಅಪ್‌ಡೇಟ್ ಮಾಡಲು ವರ್ಚುವಲ್ DOM ಅನ್ನು ಬಳಸುತ್ತದೆ, ಆದರೆ ಅತಿಯಾದ ರೀ-ರೆಂಡರ್‌ಗಳು, ವಿಶೇಷವಾಗಿ ಸಂಕೀರ್ಣ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಲ್ಲಿ, ಕಾರ್ಯಕ್ಷಮತೆಯ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರಬಹುದು. ಉತ್ಪನ್ನಗಳ ಬೆಲೆಗಳು ಆಗಾಗ್ಗೆ ಅಪ್‌ಡೇಟ್ ಆಗುವ ಜಾಗತಿಕ ಇ-ಕಾಮರ್ಸ್ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಅನ್ನು ಕಲ್ಪಿಸಿಕೊಳ್ಳಿ. ಆಪ್ಟಿಮೈಸೇಶನ್ ಇಲ್ಲದಿದ್ದರೆ, ಒಂದು ಸಣ್ಣ ಬೆಲೆ ಬದಲಾವಣೆಯು ಇಡೀ ಉತ್ಪನ್ನ ಪಟ್ಟಿಯಾದ್ಯಂತ ರೀ-ರೆಂಡರ್‌ಗಳನ್ನು ಪ್ರಚೋದಿಸಬಹುದು, ಇದು ಬಳಕೆದಾರರ ಬ್ರೌಸಿಂಗ್ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರುತ್ತದೆ.

ಕಾಂಪೊನೆಂಟ್‌ಗಳು ಏಕೆ ರೀ-ರೆಂಡರ್ ಆಗುತ್ತವೆ

ಕಾರ್ಯಕ್ಷಮತೆ ಆಪ್ಟಿಮೈಸೇಶನ್‌ನ ಗುರಿಯು ಅನಗತ್ಯ ರೀ-ರೆಂಡರ್‌ಗಳನ್ನು ತಡೆಯುವುದಾಗಿದೆ, ಕಾಂಪೊನೆಂಟ್‌ಗಳು ತಮ್ಮ ಡೇಟಾ ನಿಜವಾಗಿಯೂ ಬದಲಾದಾಗ ಮಾತ್ರ ಅಪ್‌ಡೇಟ್ ಆಗುವುದನ್ನು ಖಚಿತಪಡಿಸುತ್ತದೆ. ಸ್ಟಾಕ್ ಮಾರುಕಟ್ಟೆ ವಿಶ್ಲೇಷಣೆಗಾಗಿ ನೈಜ-ಸಮಯದ ಡೇಟಾ ದೃಶ್ಯೀಕರಣವನ್ನು ಒಳಗೊಂಡ ಸನ್ನಿವೇಶವನ್ನು ಪರಿಗಣಿಸಿ. ಪ್ರತಿ ಸಣ್ಣ ಡೇಟಾ ಅಪ್‌ಡೇಟ್‌ನೊಂದಿಗೆ ಚಾರ್ಟ್ ಕಾಂಪೊನೆಂಟ್‌ಗಳು ಅನಗತ್ಯವಾಗಿ ರೀ-ರೆಂಡರ್ ಆದರೆ, ಅಪ್ಲಿಕೇಶನ್ ಪ್ರತಿಕ್ರಿಯಿಸುವುದಿಲ್ಲ. ರೀ-ರೆಂಡರ್‌ಗಳನ್ನು ಉತ್ತಮಗೊಳಿಸುವುದು ಸುಗಮ ಮತ್ತು ಸ್ಪಂದಿಸುವ ಬಳಕೆದಾರ ಅನುಭವವನ್ನು ಖಚಿತಪಡಿಸುತ್ತದೆ.

useMemo ಪರಿಚಯ: ದುಬಾರಿ ಲೆಕ್ಕಾಚಾರಗಳನ್ನು ಮೆಮೊಯಿಸ್ ಮಾಡುವುದು

useMemo ಒಂದು ರಿಯಾಕ್ಟ್ ಹುಕ್ ಆಗಿದ್ದು, ಇದು ಲೆಕ್ಕಾಚಾರದ ಫಲಿತಾಂಶವನ್ನು ಮೆಮೊಯಿಸ್ ಮಾಡುತ್ತದೆ. ಮೆಮೊೈಸೇಶನ್ ಒಂದು ಆಪ್ಟಿಮೈಸೇಶನ್ ತಂತ್ರವಾಗಿದ್ದು, ಇದು ದುಬಾರಿ ಫಂಕ್ಷನ್ ಕಾಲ್‌ಗಳ ಫಲಿತಾಂಶಗಳನ್ನು ಸಂಗ್ರಹಿಸುತ್ತದೆ ಮತ್ತು ಅದೇ ಇನ್‌ಪುಟ್‌ಗಳು ಮತ್ತೆ ಸಂಭವಿಸಿದಾಗ ಆ ಫಲಿತಾಂಶಗಳನ್ನು ಮರುಬಳಕೆ ಮಾಡುತ್ತದೆ. ಇದು ಫಂಕ್ಷನ್ ಅನ್ನು ಅನಗತ್ಯವಾಗಿ ಮರು-ಕಾರ್ಯಗತಗೊಳಿಸುವ ಅಗತ್ಯವನ್ನು ತಡೆಯುತ್ತದೆ.

useMemo ಅನ್ನು ಯಾವಾಗ ಬಳಸಬೇಕು

useMemo ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ

useMemo ಎರಡು ಆರ್ಗ್ಯುಮೆಂಟ್‌ಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ:

  1. ಲೆಕ್ಕಾಚಾರವನ್ನು ನಿರ್ವಹಿಸುವ ಫಂಕ್ಷನ್.
  2. ಡಿಪೆಂಡೆನ್ಸಿಗಳ ಅರೇ.

ಅರೇಯಲ್ಲಿನ ಡಿಪೆಂಡೆನ್ಸಿಗಳಲ್ಲಿ ಒಂದು ಬದಲಾದಾಗ ಮಾತ್ರ ಫಂಕ್ಷನ್ ಕಾರ್ಯಗತಗೊಳ್ಳುತ್ತದೆ. ಇಲ್ಲದಿದ್ದರೆ, useMemo ಈ ಹಿಂದೆ ಮೆಮೊಯಿಸ್ ಮಾಡಿದ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ.

ಉದಾಹರಣೆ: ಫಿಬೊನಾಕಿ ಸರಣಿಯನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡುವುದು

ಫಿಬೊನಾಕಿ ಸರಣಿಯು ಗಣನಾತ್ಮಕವಾಗಿ ತೀವ್ರವಾದ ಲೆಕ್ಕಾಚಾರದ ಒಂದು ಶ್ರೇಷ್ಠ ಉದಾಹರಣೆಯಾಗಿದೆ. useMemo ಬಳಸಿ nನೇ ಫಿಬೊನಾಕಿ ಸಂಖ್ಯೆಯನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡುವ ಕಾಂಪೊನೆಂಟ್ ಅನ್ನು ರಚಿಸೋಣ.


import React, { useState, useMemo } from 'react';

function Fibonacci({ n }) {
  const fibonacciNumber = useMemo(() => {
    console.log('Calculating Fibonacci...'); // ಲೆಕ್ಕಾಚಾರ ಯಾವಾಗ ನಡೆಯುತ್ತದೆ ಎಂಬುದನ್ನು ತೋರಿಸುತ್ತದೆ
    function calculateFibonacci(num) {
      if (num <= 1) {
        return num;
      }
      return calculateFibonacci(num - 1) + calculateFibonacci(num - 2);
    }
    return calculateFibonacci(n);
  }, [n]);

  return 

Fibonacci({n}) = {fibonacciNumber}

; } function App() { const [number, setNumber] = useState(5); return (
setNumber(parseInt(e.target.value))} />
); } export default App;

ಈ ಉದಾಹರಣೆಯಲ್ಲಿ, n ಪ್ರಾಪ್ ಬದಲಾದಾಗ ಮಾತ್ರ calculateFibonacci ಫಂಕ್ಷನ್ ಕಾರ್ಯಗತಗೊಳ್ಳುತ್ತದೆ. useMemo ಇಲ್ಲದಿದ್ದರೆ, n ಒಂದೇ ಆಗಿದ್ದರೂ, Fibonacci ಕಾಂಪೊನೆಂಟ್‌ನ ಪ್ರತಿ ರೀ-ರೆಂಡರ್‌ನಲ್ಲಿ ಫಂಕ್ಷನ್ ಕಾರ್ಯಗತಗೊಳ್ಳುತ್ತಿತ್ತು. ಈ ಲೆಕ್ಕಾಚಾರವು ಜಾಗತಿಕ ಹಣಕಾಸು ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ನಲ್ಲಿ ನಡೆಯುತ್ತಿದೆ ಎಂದು ಊಹಿಸಿಕೊಳ್ಳಿ - ಮಾರುಕಟ್ಟೆಯ ಪ್ರತಿ ಟಿಕ್ ಪೂರ್ಣ ಮರುಲೆಕ್ಕಾಚಾರಕ್ಕೆ ಕಾರಣವಾಗುತ್ತದೆ, ಇದು ಗಮನಾರ್ಹ ವಿಳಂಬಕ್ಕೆ ಕಾರಣವಾಗುತ್ತದೆ. useMemo ಅದನ್ನು ತಡೆಯುತ್ತದೆ.

useCallback ಪರಿಚಯ: ಫಂಕ್ಷನ್‌ಗಳನ್ನು ಮೆಮೊಯಿಸ್ ಮಾಡುವುದು

useCallback ಫಂಕ್ಷನ್‌ಗಳನ್ನು ಮೆಮೊಯಿಸ್ ಮಾಡುವ ಮತ್ತೊಂದು ರಿಯಾಕ್ಟ್ ಹುಕ್ ಆಗಿದೆ. ಇದು ಪ್ರತಿ ರೆಂಡರ್‌ನಲ್ಲಿ ಹೊಸ ಫಂಕ್ಷನ್ ಇನ್‌ಸ್ಟೆನ್ಸ್ ರಚನೆಯಾಗುವುದನ್ನು ತಡೆಯುತ್ತದೆ, ಇದು ಚೈಲ್ಡ್ ಕಾಂಪೊನೆಂಟ್‌ಗಳಿಗೆ ಕಾಲ್‌ಬ್ಯಾಕ್‌ಗಳನ್ನು ಪ್ರಾಪ್ಸ್ ಆಗಿ ರವಾನಿಸುವಾಗ ವಿಶೇಷವಾಗಿ ಉಪಯುಕ್ತವಾಗಿದೆ.

useCallback ಅನ್ನು ಯಾವಾಗ ಬಳಸಬೇಕು

useCallback ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ

useCallback ಎರಡು ಆರ್ಗ್ಯುಮೆಂಟ್‌ಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ:

  1. ಮೆಮೊಯಿಸ್ ಮಾಡಬೇಕಾದ ಫಂಕ್ಷನ್.
  2. ಡಿಪೆಂಡೆನ್ಸಿಗಳ ಅರೇ.

ಅರೇಯಲ್ಲಿನ ಡಿಪೆಂಡೆನ್ಸಿಗಳಲ್ಲಿ ಒಂದು ಬದಲಾದಾಗ ಮಾತ್ರ ಫಂಕ್ಷನ್ ಮರು-ರಚನೆಯಾಗುತ್ತದೆ. ಇಲ್ಲದಿದ್ದರೆ, useCallback ಅದೇ ಫಂಕ್ಷನ್ ಇನ್‌ಸ್ಟೆನ್ಸ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ.

ಉದಾಹರಣೆ: ಬಟನ್ ಕ್ಲಿಕ್ ಅನ್ನು ನಿರ್ವಹಿಸುವುದು

ಕಾಲ್‌ಬ್ಯಾಕ್ ಫಂಕ್ಷನ್ ಅನ್ನು ಪ್ರಚೋದಿಸುವ ಬಟನ್ ಹೊಂದಿರುವ ಕಾಂಪೊನೆಂಟ್ ಅನ್ನು ರಚಿಸೋಣ. ನಾವು ಕಾಲ್‌ಬ್ಯಾಕ್ ಫಂಕ್ಷನ್ ಅನ್ನು ಮೆಮೊಯಿಸ್ ಮಾಡಲು useCallback ಅನ್ನು ಬಳಸುತ್ತೇವೆ.


import React, { useState, useCallback } from 'react';

function Button({ onClick, children }) {
  console.log('Button re-rendered'); // ಬಟನ್ ಯಾವಾಗ ರೀ-ರೆಂಡರ್ ಆಗುತ್ತದೆ ಎಂಬುದನ್ನು ತೋರಿಸುತ್ತದೆ
  return ;
}

const MemoizedButton = React.memo(Button);

function App() {
  const [count, setCount] = useState(0);

  const handleClick = useCallback(() => {
    console.log('Button clicked');
    setCount((prevCount) => prevCount + 1);
  }, []); // ಖಾಲಿ ಡಿಪೆಂಡೆನ್ಸಿ ಅರೇ ಎಂದರೆ ಫಂಕ್ಷನ್ ಒಮ್ಮೆ ಮಾತ್ರ ರಚನೆಯಾಗುತ್ತದೆ

  return (
    

Count: {count}

Increment
); } export default App;

ಈ ಉದಾಹರಣೆಯಲ್ಲಿ, handleClick ಫಂಕ್ಷನ್ ಒಮ್ಮೆ ಮಾತ್ರ ರಚನೆಯಾಗುತ್ತದೆ ಏಕೆಂದರೆ ಡಿಪೆಂಡೆನ್ಸಿ ಅರೇ ಖಾಲಿಯಾಗಿದೆ. count ಸ್ಟೇಟ್ ಬದಲಾವಣೆಯಿಂದಾಗಿ App ಕಾಂಪೊನೆಂಟ್ ರೀ-ರೆಂಡರ್ ಆದಾಗ, handleClick ಫಂಕ್ಷನ್ ಒಂದೇ ಆಗಿರುತ್ತದೆ. React.memo ನೊಂದಿಗೆ ಸುತ್ತುವರಿದ MemoizedButton ಕಾಂಪೊನೆಂಟ್, ಅದರ ಪ್ರಾಪ್ಸ್ ಬದಲಾದರೆ ಮಾತ್ರ ರೀ-ರೆಂಡರ್ ಆಗುತ್ತದೆ. onClick ಪ್ರಾಪ್ (handleClick) ಒಂದೇ ಆಗಿರುವುದರಿಂದ, Button ಕಾಂಪೊನೆಂಟ್ ಅನಗತ್ಯವಾಗಿ ರೀ-ರೆಂಡರ್ ಆಗುವುದಿಲ್ಲ. ಸಂವಾದಾತ್ಮಕ ನಕ್ಷೆ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಕಲ್ಪಿಸಿಕೊಳ್ಳಿ. ಬಳಕೆದಾರರು ಸಂವಹನ ನಡೆಸಿದಾಗಲೆಲ್ಲಾ, ಡಜನ್ಗಟ್ಟಲೆ ಬಟನ್ ಕಾಂಪೊನೆಂಟ್‌ಗಳು ಪರಿಣಾಮ ಬೀರಬಹುದು. useCallback ಇಲ್ಲದಿದ್ದರೆ, ಈ ಬಟನ್‌ಗಳು ಅನಗತ್ಯವಾಗಿ ರೀ-ರೆಂಡರ್ ಆಗುತ್ತವೆ, ಇದು ನಿಧಾನಗತಿಯ ಅನುಭವವನ್ನು ಸೃಷ್ಟಿಸುತ್ತದೆ. useCallback ಅನ್ನು ಬಳಸುವುದು ಸುಗಮ ಸಂವಹನವನ್ನು ಖಚಿತಪಡಿಸುತ್ತದೆ.

React.memo ಪರಿಚಯ: ಕಾಂಪೊನೆಂಟ್‌ಗಳನ್ನು ಮೆಮೊಯಿಸ್ ಮಾಡುವುದು

React.memo ಒಂದು ಹೈಯರ್-ಆರ್ಡರ್ ಕಾಂಪೊನೆಂಟ್ (HOC) ಆಗಿದ್ದು, ಇದು ಫಂಕ್ಷನಲ್ ಕಾಂಪೊನೆಂಟ್ ಅನ್ನು ಮೆಮೊಯಿಸ್ ಮಾಡುತ್ತದೆ. ಅದರ ಪ್ರಾಪ್ಸ್ ಬದಲಾಗದಿದ್ದರೆ ಕಾಂಪೊನೆಂಟ್ ರೀ-ರೆಂಡರ್ ಆಗುವುದನ್ನು ಇದು ತಡೆಯುತ್ತದೆ. ಇದು ಕ್ಲಾಸ್ ಕಾಂಪೊನೆಂಟ್‌ಗಳಿಗಾಗಿ PureComponent ನಂತೆಯೇ ಇರುತ್ತದೆ.

React.memo ಅನ್ನು ಯಾವಾಗ ಬಳಸಬೇಕು

React.memo ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ

React.memo ಒಂದು ಫಂಕ್ಷನಲ್ ಕಾಂಪೊನೆಂಟ್ ಅನ್ನು ಸುತ್ತುವರಿಯುತ್ತದೆ ಮತ್ತು ಹಿಂದಿನ ಮತ್ತು ಮುಂದಿನ ಪ್ರಾಪ್ಸ್‌ಗಳನ್ನು ಆಳವಿಲ್ಲದೆ ಹೋಲಿಸುತ್ತದೆ (shallowly compares). ಪ್ರಾಪ್ಸ್ ಒಂದೇ ಆಗಿದ್ದರೆ, ಕಾಂಪೊನೆಂಟ್ ರೀ-ರೆಂಡರ್ ಆಗುವುದಿಲ್ಲ.

ಉದಾಹರಣೆ: ಬಳಕೆದಾರರ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಪ್ರದರ್ಶಿಸುವುದು

ಬಳಕೆದಾರರ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಪ್ರದರ್ಶಿಸುವ ಕಾಂಪೊನೆಂಟ್ ಅನ್ನು ರಚಿಸೋಣ. ಬಳಕೆದಾರರ ಡೇಟಾ ಬದಲಾಗದಿದ್ದರೆ ಅನಗತ್ಯ ರೀ-ರೆಂಡರ್‌ಗಳನ್ನು ತಡೆಯಲು ನಾವು React.memo ಅನ್ನು ಬಳಸುತ್ತೇವೆ.


import React from 'react';

function UserProfile({ user }) {
  console.log('UserProfile re-rendered'); // ಕಾಂಪೊನೆಂಟ್ ಯಾವಾಗ ರೀ-ರೆಂಡರ್ ಆಗುತ್ತದೆ ಎಂಬುದನ್ನು ತೋರಿಸುತ್ತದೆ
  return (
    

Name: {user.name}

Email: {user.email}

); } const MemoizedUserProfile = React.memo(UserProfile, (prevProps, nextProps) => { // ಕಸ್ಟಮ್ ಹೋಲಿಕೆ ಫಂಕ್ಷನ್ (ಐಚ್ಛಿಕ) return prevProps.user.id === nextProps.user.id; // ಬಳಕೆದಾರರ ID ಬದಲಾದರೆ ಮಾತ್ರ ರೀ-ರೆಂಡರ್ ಮಾಡಿ }); function App() { const [user, setUser] = React.useState({ id: 1, name: 'John Doe', email: 'john.doe@example.com', }); const updateUser = () => { setUser({ ...user, name: 'Jane Doe' }); // ಹೆಸರನ್ನು ಬದಲಾಯಿಸುವುದು }; return (
); } export default App;

ಈ ಉದಾಹರಣೆಯಲ್ಲಿ, user.id ಪ್ರಾಪ್ ಬದಲಾದರೆ ಮಾತ್ರ MemoizedUserProfile ಕಾಂಪೊನೆಂಟ್ ರೀ-ರೆಂಡರ್ ಆಗುತ್ತದೆ. user ಆಬ್ಜೆಕ್ಟ್‌ನ ಇತರ ಪ್ರಾಪರ್ಟಿಗಳು ಬದಲಾದರೂ (ಉದಾಹರಣೆಗೆ, ಹೆಸರು ಅಥವಾ ಇಮೇಲ್), ID ವಿಭಿನ್ನವಾಗಿರದ ಹೊರತು ಕಾಂಪೊನೆಂಟ್ ರೀ-ರೆಂಡರ್ ಆಗುವುದಿಲ್ಲ. `React.memo` ನಲ್ಲಿರುವ ಈ ಕಸ್ಟಮ್ ಹೋಲಿಕೆ ಫಂಕ್ಷನ್, ಕಾಂಪೊನೆಂಟ್ ಯಾವಾಗ ರೀ-ರೆಂಡರ್ ಆಗಬೇಕು ಎಂಬುದರ ಮೇಲೆ ಸೂಕ್ಷ್ಮ-ನಿಯಂತ್ರಣವನ್ನು ಅನುಮತಿಸುತ್ತದೆ. ನಿರಂತರವಾಗಿ ಅಪ್‌ಡೇಟ್ ಆಗುವ ಬಳಕೆದಾರ ಪ್ರೊಫೈಲ್‌ಗಳಿರುವ ಸಾಮಾಜಿಕ ಮಾಧ್ಯಮ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಅನ್ನು ಪರಿಗಣಿಸಿ. `React.memo` ಇಲ್ಲದಿದ್ದರೆ, ಬಳಕೆದಾರರ ಸ್ಟೇಟಸ್ ಅಥವಾ ಪ್ರೊಫೈಲ್ ಚಿತ್ರವನ್ನು ಬದಲಾಯಿಸುವುದು, ಪ್ರೊಫೈಲ್ ಕಾಂಪೊನೆಂಟ್‌ನ ಪೂರ್ಣ ರೀ-ರೆಂಡರ್‌ಗೆ ಕಾರಣವಾಗುತ್ತದೆ, ಮುಖ್ಯ ಬಳಕೆದಾರರ ವಿವರಗಳು ಒಂದೇ ಆಗಿದ್ದರೂ ಸಹ. `React.memo` ಉದ್ದೇಶಿತ ಅಪ್‌ಡೇಟ್‌ಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ ಮತ್ತು ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಸುಧಾರಿಸುತ್ತದೆ.

useMemo, useCallback, ಮತ್ತು React.memo ಅನ್ನು ಸಂಯೋಜಿಸುವುದು

ಈ ಮೂರು ತಂತ್ರಗಳು ಒಟ್ಟಿಗೆ ಬಳಸಿದಾಗ ಹೆಚ್ಚು ಪರಿಣಾಮಕಾರಿಯಾಗಿರುತ್ತವೆ. useMemo ದುಬಾರಿ ಲೆಕ್ಕಾಚಾರಗಳನ್ನು ಮೆಮೊಯಿಸ್ ಮಾಡುತ್ತದೆ, useCallback ಫಂಕ್ಷನ್‌ಗಳನ್ನು ಮೆಮೊಯಿಸ್ ಮಾಡುತ್ತದೆ, ಮತ್ತು React.memo ಕಾಂಪೊನೆಂಟ್‌ಗಳನ್ನು ಮೆಮೊಯಿಸ್ ಮಾಡುತ್ತದೆ. ಈ ತಂತ್ರಗಳನ್ನು ಸಂಯೋಜಿಸುವ ಮೂಲಕ, ನಿಮ್ಮ ರಿಯಾಕ್ಟ್ ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ ಅನಗತ್ಯ ರೀ-ರೆಂಡರ್‌ಗಳ ಸಂಖ್ಯೆಯನ್ನು ನೀವು ಗಮನಾರ್ಹವಾಗಿ ಕಡಿಮೆ ಮಾಡಬಹುದು.

ಉದಾಹರಣೆ: ಒಂದು ಸಂಕೀರ್ಣ ಕಾಂಪೊನೆಂಟ್

ಈ ತಂತ್ರಗಳನ್ನು ಹೇಗೆ ಸಂಯೋಜಿಸುವುದು ಎಂಬುದನ್ನು ಪ್ರದರ್ಶಿಸುವ ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾದ ಕಾಂಪೊನೆಂಟ್ ಅನ್ನು ರಚಿಸೋಣ.


import React, { useState, useCallback, useMemo } from 'react';

function ListItem({ item, onUpdate, onDelete }) {
  console.log(`ListItem ${item.id} re-rendered`); // ಕಾಂಪೊನೆಂಟ್ ಯಾವಾಗ ರೀ-ರೆಂಡರ್ ಆಗುತ್ತದೆ ಎಂಬುದನ್ನು ತೋರಿಸುತ್ತದೆ
  return (
    
  • {item.text}
  • ); } const MemoizedListItem = React.memo(ListItem); function List({ items, onUpdate, onDelete }) { console.log('List re-rendered'); // ಕಾಂಪೊನೆಂಟ್ ಯಾವಾಗ ರೀ-ರೆಂಡರ್ ಆಗುತ್ತದೆ ಎಂಬುದನ್ನು ತೋರಿಸುತ್ತದೆ return (
      {items.map((item) => ( ))}
    ); } const MemoizedList = React.memo(List); function App() { const [items, setItems] = useState([ { id: 1, text: 'Item 1' }, { id: 2, text: 'Item 2' }, { id: 3, text: 'Item 3' }, ]); const handleUpdate = useCallback((id) => { setItems((prevItems) => prevItems.map((item) => item.id === id ? { ...item, text: `Updated ${item.text}` } : item ) ); }, []); const handleDelete = useCallback((id) => { setItems((prevItems) => prevItems.filter((item) => item.id !== id)); }, []); const memoizedItems = useMemo(() => items, [items]); return (
    ); } export default App;

    ಈ ಉದಾಹರಣೆಯಲ್ಲಿ:

    ಈ ತಂತ್ರಗಳ ಸಂಯೋಜನೆಯು ಕಾಂಪೊನೆಂಟ್‌ಗಳು ಅಗತ್ಯವಿದ್ದಾಗ ಮಾತ್ರ ರೀ-ರೆಂಡರ್ ಆಗುವುದನ್ನು ಖಚಿತಪಡಿಸುತ್ತದೆ, ಇದು ಗಮನಾರ್ಹ ಕಾರ್ಯಕ್ಷಮತೆ ಸುಧಾರಣೆಗೆ ಕಾರಣವಾಗುತ್ತದೆ. ಕಾರ್ಯಗಳ ಪಟ್ಟಿಗಳು ನಿರಂತರವಾಗಿ ಅಪ್‌ಡೇಟ್, ಡಿಲೀಟ್, ಮತ್ತು ಮರು-ಕ್ರಮಗೊಳಿಸಲಾಗುತ್ತಿರುವ ಬೃಹತ್-ಪ್ರಮಾಣದ ಪ್ರಾಜೆಕ್ಟ್ ಮ್ಯಾನೇಜ್‌ಮೆಂಟ್ ಟೂಲ್ ಅನ್ನು ಕಲ್ಪಿಸಿಕೊಳ್ಳಿ. ಈ ಆಪ್ಟಿಮೈಸೇಶನ್‌ಗಳಿಲ್ಲದಿದ್ದರೆ, ಕಾರ್ಯ ಪಟ್ಟಿಯಲ್ಲಿನ ಯಾವುದೇ ಸಣ್ಣ ಬದಲಾವಣೆಯು ರೀ-ರೆಂಡರ್‌ಗಳ ಸರಣಿಯನ್ನು ಪ್ರಚೋದಿಸುತ್ತದೆ, ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ನಿಧಾನ ಮತ್ತು ಪ್ರತಿಕ್ರಿಯಿಸದಂತೆ ಮಾಡುತ್ತದೆ. useMemo, useCallback, ಮತ್ತು React.memo ಅನ್ನು ಕಾರ್ಯತಂತ್ರವಾಗಿ ಬಳಸುವ ಮೂಲಕ, ಸಂಕೀರ್ಣ ಡೇಟಾ ಮತ್ತು ಆಗಾಗ್ಗೆ ಅಪ್‌ಡೇಟ್‌ಗಳೊಂದಿಗೆ ಸಹ ಅಪ್ಲಿಕೇಶನ್ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಉಳಿಸಿಕೊಳ್ಳಬಹುದು.

    ಹೆಚ್ಚುವರಿ ಆಪ್ಟಿಮೈಸೇಶನ್ ತಂತ್ರಗಳು

    useMemo, useCallback, ಮತ್ತು React.memo ಶಕ್ತಿಯುತ ಸಾಧನಗಳಾಗಿದ್ದರೂ, ರಿಯಾಕ್ಟ್ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಉತ್ತಮಗೊಳಿಸಲು ಇವು ಮಾತ್ರ ಆಯ್ಕೆಗಳಲ್ಲ. ಪರಿಗಣಿಸಲು ಕೆಲವು ಹೆಚ್ಚುವರಿ ತಂತ್ರಗಳು ಇಲ್ಲಿವೆ:

    ಆಪ್ಟಿಮೈಸೇಶನ್‌ಗಾಗಿ ಜಾಗತಿಕ ಪರಿಗಣನೆಗಳು

    ಜಾಗತಿಕ ಪ್ರೇಕ್ಷಕರಿಗಾಗಿ ರಿಯಾಕ್ಟ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಉತ್ತಮಗೊಳಿಸುವಾಗ, ನೆಟ್‌ವರ್ಕ್ ಲೇಟೆನ್ಸಿ, ಸಾಧನದ ಸಾಮರ್ಥ್ಯಗಳು ಮತ್ತು ಸ್ಥಳೀಕರಣದಂತಹ ಅಂಶಗಳನ್ನು ಪರಿಗಣಿಸುವುದು ಮುಖ್ಯ. ಇಲ್ಲಿ ಕೆಲವು ಸಲಹೆಗಳಿವೆ:

    ತೀರ್ಮಾನ

    ಸುಗಮ ಮತ್ತು ಸ್ಪಂದಿಸುವ ಬಳಕೆದಾರ ಅನುಭವವನ್ನು ನೀಡಲು ರಿಯಾಕ್ಟ್ ಅಪ್ಲಿಕೇಶನ್ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಉತ್ತಮಗೊಳಿಸುವುದು ಬಹಳ ಮುಖ್ಯ. useMemo, useCallback, ಮತ್ತು React.memo ನಂತಹ ತಂತ್ರಗಳನ್ನು ಕರಗತ ಮಾಡಿಕೊಳ್ಳುವ ಮೂಲಕ ಮತ್ತು ಜಾಗತಿಕ ಆಪ್ಟಿಮೈಸೇಶನ್ ತಂತ್ರಗಳನ್ನು ಪರಿಗಣಿಸುವ ಮೂಲಕ, ನೀವು ವೈವಿಧ್ಯಮಯ ಬಳಕೆದಾರರ ನೆಲೆಯ ಅಗತ್ಯಗಳನ್ನು ಪೂರೈಸಲು ವಿಸ್ತರಿಸಬಲ್ಲ ಉತ್ತಮ-ಕಾರ್ಯಕ್ಷಮತೆಯ ರಿಯಾಕ್ಟ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ನಿರ್ಮಿಸಬಹುದು. ಕಾರ್ಯಕ್ಷಮತೆಯ ಅಡಚಣೆಗಳನ್ನು ಗುರುತಿಸಲು ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಪ್ರೊಫೈಲ್ ಮಾಡಲು ಮತ್ತು ಈ ಆಪ್ಟಿಮೈಸೇಶನ್ ತಂತ್ರಗಳನ್ನು ಕಾರ್ಯತಂತ್ರವಾಗಿ ಅನ್ವಯಿಸಲು ಮರೆಯದಿರಿ. ಅಕಾಲಿಕವಾಗಿ ಆಪ್ಟಿಮೈಜ್ ಮಾಡಬೇಡಿ – ನೀವು ಹೆಚ್ಚು ಮಹತ್ವದ ಪರಿಣಾಮವನ್ನು ಸಾಧಿಸಬಹುದಾದ ಕ್ಷೇತ್ರಗಳ ಮೇಲೆ ಗಮನಹರಿಸಿ.

    ಈ ಮಾರ್ಗದರ್ಶಿ ರಿಯಾಕ್ಟ್ ಕಾರ್ಯಕ್ಷಮತೆ ಆಪ್ಟಿಮೈಸೇಶನ್‌ಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಮತ್ತು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಒಂದು ದೃಢವಾದ ಅಡಿಪಾಯವನ್ನು ಒದಗಿಸುತ್ತದೆ. ನೀವು ರಿಯಾಕ್ಟ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುವುದನ್ನು ಮುಂದುವರಿಸಿದಂತೆ, ಕಾರ್ಯಕ್ಷಮತೆಗೆ ಆದ್ಯತೆ ನೀಡಲು ಮತ್ತು ಬಳಕೆದಾರರ ಅನುಭವವನ್ನು ಸುಧಾರಿಸಲು ಹೊಸ ಮಾರ್ಗಗಳನ್ನು ನಿರಂತರವಾಗಿ ಹುಡುಕಲು ಮರೆಯದಿರಿ.